package com.qsw.paper.controller.admin;


import cn.hutool.core.bean.BeanUtil;
import com.qsw.paper.constant.MessageConstants;
import com.qsw.paper.pojo.dto.CollegeDto;
import com.qsw.paper.pojo.dto.CollegeQueryDto;
import com.qsw.paper.pojo.entity.Colleges;
import com.qsw.paper.result.Result;
import com.qsw.paper.service.ICollegesService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

/**
 * <p>
 * 前端控制器
 * </p>
 *
 * @author qsw
 * @since 2024-11-15
 */
@RestController("adminCollegesController")
@RequestMapping("/admin/college")
@RequiredArgsConstructor
@Slf4j
public class CollegesController {

    private final ICollegesService iCollegesService;


    /**
     * 获取学院列表
     * @param queryDto dto
     * @return 分页后的学院列表
     */
    @GetMapping("/list")
    public Result<?> pageList(CollegeQueryDto queryDto) {
        log.info("管理员获取学院列表:{}", queryDto);
        return Result.success(iCollegesService.pageList(queryDto), MessageConstants.SELECT_OK);
    }


    /**
     * 添加学院
     *
     * @param collegeDto dto
     * @return 提示
     */
    @PostMapping
    public Result<?> save(@RequestBody @Valid CollegeDto collegeDto) {
        log.info("管理员添加学院:{}", collegeDto);
        iCollegesService.save(collegeDto);
        return Result.success(MessageConstants.ADD_OK);
    }


    /**
     * 修改学院信息
     *
     * @param collegeDto dto
     * @return 提示
     */
    @PutMapping()
    public Result<?> update(@RequestBody @Valid CollegeDto collegeDto) {
        log.info("修改学院信息:{}", collegeDto);
        iCollegesService.update(collegeDto);
        return Result.success(MessageConstants.OPERATION_SUCCESSFUL);
    }


    /**
     * 删除学院
     *
     * @param id 学院id
     * @return 提示
     */
    @DeleteMapping("/{id}")
    public Result<?> delete(@PathVariable Integer id) {
        log.info("管理员删除学院信息:{}", id);
        iCollegesService.deleteById(id);
        return Result.success(MessageConstants.OPERATION_SUCCESSFUL);
    }


    /**
     * 获取学院详细信息
     *
     * @param id 学院id
     * @return 学院实体
     */
    @GetMapping("/{id}")
    public Result<?> getDetailById(@PathVariable Integer id) {
        log.info("管理员获取学院详情");
        return Result.success(iCollegesService.getById(id), MessageConstants.SELECT_OK);
    }

}
